perm filename SYMBOL.MF[1,3] blob
sn#549045 filedate 1980-12-12 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00038 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00004 00002 % The Computer Modern Symbols family of fonts (by D. E. Knuth, 1979).
C00005 00003 "Zero-width slash to negate a relation"
C00006 00004 "Set union sign"
C00007 00005 "Set intersection sign"
C00008 00006 "Multiset union sign"
C00009 00007 "Lattice infimum (logical AND) sign"
C00010 00008 "Lattice supremum (logical OR) sign"
C00011 00009 "Left turnstile"
C00012 00010 "Right turnstile"
C00013 00011 "Left floor bracket"
C00014 00012 "Right floor bracket"
C00015 00013 "Left ceiling bracket"
C00016 00014 "Right ceiling bracket"
C00017 00015 "Left brace"
C00018 00016 "Right brace"
C00019 00017 "Left angle bracket"
C00020 00018 "Right angle bracket"
C00021 00019 "Vertical line (absolute value or length)"
C00022 00020 "Double vertical line (norm or cardinality)"
C00023 00021 "Double left bracket"
C00024 00022 "Double right bracket"
C00025 00023 "Radical sign"
C00026 00024 "Sharp symbol (number sign or hash mark)"
C00027 00025 "Nabla or backwards-difference operator"
C00028 00026 "Integral sign"
C00029 00027 "Square set union sign (Scott lub)"
C00030 00028 "Square set intersection sign (Scott glb)"
C00031 00029 "Square reflexive subset sign"
C00032 00030 "Section sign"
C00033 00031 "Dagger mark"
C00034 00032 "Double dagger mark"
C00035 00033 "Paragraph mark"
C00036 00034 "At sign"
C00037 00035 "Copyright symbol"
C00039 00036 "Sterling sign"
C00040 00037 "Dollar sign"
C00042 00038 input symext % possible characters \¬077, \¬156, \¬157, \¬167
C00043 ENDMK
C⊗;
% The Computer Modern Symbols family of fonts (by D. E. Knuth, 1979).
danger=0;
codingscheme "TEX MATHSY";
mi=1; input script; % upper case script alphabet
texinfo slant, 6pu, 3pu, 2pu, px, 18pu;
% (The calling file should give the rest of the \&{texinfo}.)
new slant; slant=0; trxy 0; % the non-script characters are unslanted
input symb; % symbols whose codes are \¬000--\¬077
"Zero-width slash to negate a relation";
call charbegin('100,18,0,0,ph+pb,ph+pb-2pa,0);
charwd 0; chardw 0;
cpen; rt10x1=round(r-2u); lft10x2=round 2u;
top10y1=h+b; .5[y1,y2]=a;
w10 draw 1..2. % diagonal
"Set union sign";
call charbegin('133,13,0,0,ph,ph-2pa,0);
cpen; lft10x1=round u; x2=x1; x3=r-x3; x4=x5=r-x1;
y1=good10(.5[m,h]); .5[y1,y3]=a; y2=y4=2/3[y1,y3]; y5=y1;
call qcirc(3,6,2,w10); call qcirc(3,7,4,w10); % cup
w10 draw 1..2; draw 4..5. % stems
"Set intersection sign";
call charbegin('134,13,0,0,ph,ph-2pa,0);
cpen; lft10x1=round u; x2=x1; x3=r-x3; x4=x5=r-x1;
y3=good10(.5[m,h]); .5[y1,y3]=a; y2=y4=2/3[y1,y3]; y5=y1;
call qcirc(3,6,2,w10); call qcirc(3,7,4,w10); % cap
w10 draw 1..2; draw 4..5. % stems
"Multiset union sign";
call charbegin('135,13,0,0,ph,ph-2pa,0);
cpen; lft10x1=round u; x2=x1; x3=r-x3; x4=x5=r-x1;
y1=good10(.5[m,h]); .5[y1,y3]=a; y2=y4=2/3[y1,y3]; y5=y1;
call qcirc(3,6,2,w10); call qcirc(3,7,4,w10); % cup
w10 draw 1..2; draw 4..5; % stems
y8=y9=.47[y1,y3]; x8=r-x9=x1+1.75w10-eps;
x10=x11=x3; .5[y10,y11]=y8; y11-y10=x9-x8;
draw 8..9; draw 10..11. % enclosed plus sign
"Lattice infimum (logical AND) sign";
call charbegin('136,13,0,0,ph,ph-2pa,0);
cpen; lft10x1=round u; x3=r-x3; x5=r-x1;
y3=good10(.5[m,h]); .5[y1,y3]=a; y5=y1;
w10 draw 1..3..3..5. % diagonals
"Lattice supremum (logical OR) sign";
call charbegin('137,13,0,0,ph,ph-2pa,0);
cpen; lft10x1=round u; x3=r-x3; x5=r-x1;
y1=good10(.5[m,h]); .5[y1,y3]=a; y5=y1;
w10 draw 1..3..3..5. % diagonals
"Left turnstile";
cpen;
if fixwidth=0: if pa+8pu>ph:
call charbegin('140,18,0,0,ph,ph-2pa,0); top10y1=h;
else: call charbegin('140,18,0,0,8pu+pa,8pu-pa,0); top10y1=a+8u;
fi;
else: call charbegin('140,9,0,0,3.5pu+pa,3.5pu-pa,0); top10y1=a+3.5u;
fi;
.5[y1,y2]=a; x1=x2=x3;
lft10x3=round u; x4=r-x3; y3=y4=a;
w10 draw 1..2; % stem
draw 3..4. % bar
"Right turnstile";
cpen;
if fixwidth=0: if pa+8pu>ph:
call charbegin('141,18,0,0,ph,ph-2pa,0); top10y1=h;
else: call charbegin('141,18,0,0,8pu+pa,8pu-pa,0); top10y1=a+8u;
fi;
else: call charbegin('141,9,0,0,3.5pu+pa,3.5pu-pa,0); top10y1=a+3.5u;
fi;
.5[y1,y2]=a; x1=x2=x4;
lft10x3=round u; x4=r-x3; y3=y4=a;
w10 draw 1..2; % stem
draw 3..4. % bar
"Left floor bracket";
call charbegin('142,7,0,0,ph+pb,ph+pb-2pa,0);
cpen; x1=x2=good10 2.5u; x3=x1+3.75u+eps;
top10y1=h+b; .5[y1,y2]=a; y3=y2;
w10 draw 1..2..2..3. % stem and bar
"Right floor bracket";
call charbegin('143,7,0,0,ph+pb,ph+pb-2pa,0);
cpen; x1=x2=good10(r-2.5u); x3=x1-3.75u-eps;
top10y1=h+b; .5[y1,y2]=a; y3=y2;
w10 draw 1..2..2..3. % stem and bar
"Left ceiling bracket";
call charbegin('144,7,0,0,ph+pb,ph+pb-2pa,0);
cpen; x1=x2=good10 2.5u; x3=x1+3.75u+eps;
top10y1=h+b; .5[y1,y2]=a; y3=y1;
w10 draw 3..1..1..2. % bar and stem
"Right ceiling bracket";
call charbegin('145,7,0,0,ph+pb,ph+pb-2pa,0);
cpen; x1=x2=good10(r-2.5u); x3=x1-3.75u-eps;
top10y1=h+b; .5[y1,y2]=a; y3=y1;
w10 draw 3..1..1..2. % bar and stem
"Left brace";
call charbegin('146,9,0,0,ph+pb,ph+pb-2pa,(ph+pb).slant+.5pw-pu);
hpen; x2=x3=x5=x6=good1 .5r; x1-x2=x2-x4=3u+eps; x1=x7;
top0y1=h+b; y4=.5[y1,y7]=.5[y2,y6]=.5[y3,y5]=good6 a;
y1-y2=y3-y4=(y1-y4)/4;
draw |w0#|1{3(x2-x1),y2-y1}..|w1#|2{0,-1}..|w1#|3{0,-1}..
|w0#|4{3(x4-x3),y4-y3}; % upper stem
draw |w0#|7{3(x6-x7),y6-y7}..|w1#|6{0,1}..|w1#|5{0,1}..
|w0#|4{3(x4-x5),y4-y5}. % lower stem
"Right brace";
call charbegin('147,9,0,0,ph+pb,ph+pb-2pa,(ph+pb).slant+.5pwi-4pu);
hpen; x2=x3=x5=x6=good1 .5r; x1-x2=x2-x4=-3u-eps; x1=x7;
top0y1=h+b; y4=.5[y1,y7]=.5[y2,y6]=.5[y3,y5]=good6 a;
y1-y2=y3-y4=(y1-y4)/4;
draw |w0#|1{3(x2-x1),y2-y1}..|w1#|2{0,-1}..|w1#|3{0,-1}..
|w0#|4{3(x4-x3),y4-y3}; % upper stem
draw |w0#|7{3(x6-x7),y6-y7}..|w1#|6{0,1}..|w1#|5{0,1}..
|w0#|4{3(x4-x5),y4-y5}. % lower stem
"Left angle bracket";
call charbegin('150,6,0,0,ph+pb,ph+pb-2pa,0);
cpen; rt10x1=round(r-u); x1=x3; lft10x2=round fixwidth[u,7/3u];
top10y1=h+b; .5[y1,y3]=y2=good10a;
w10 draw 1..2..2..3. % diagonals
"Right angle bracket";
call charbegin('151,6,0,0,ph+pb,ph+pb-2pa,0);
cpen; rt10(r-x1)=round(r-u); x1=x3; lft10(r-x2)=round fixwidth[u,7/3u];
top10y1=h+b; .5[y1,y3]=y2=good10a;
w10 draw 1..2..2..3. % diagonals
"Vertical line (absolute value or length)";
call charbegin('152,5,0,0,ph+pb,ph+pb-2pa,0);
cpen; x1=x2=good10 .5r; top10y1=h+b; .5[y1,y2]=a;
w10 draw 1..2. % stem
"Double vertical line (norm or cardinality)";
call charbegin('153,9,0,0,ph+pb,ph+pb-2pa,0);
cpen; x1=x2=good10 .25r; top10y1=h+b; .5[y1,y2]=a;
x3=x4=r-x1; y3=y1; y4=y2;
w10 draw 1..2; draw 3..4. % stems
"Double left bracket";
call charbegin('154,8,0,0,ph+pb,ph+pb-2pa,0);
cpen; x1=x2=good10 2.5u; x3=x4=x1+4.75u+eps; x5=x6=x1+round 3u;
top10y1=h+b; .5[y1,y2]=a; y3=y5=y1; y4=y6=y2;
w10 draw 3..1..1..2..2..4; % bars and left stem
draw 5..6. % right stem
"Double right bracket";
call charbegin('155,8,0,0,ph+pb,ph+pb-2pa,0);
cpen; x1=x2=good10(r-2.5u);
x3=x4=x1-4.75u-eps; x5=x6=x1-round 3u;
top10y1=h+b; .5[y1,y2]=a; y3=y5=y1; y4=y6=y2;
w10 draw 3..1..1..2..2..4; % bars and right stem
draw 5..6. % left stem
"Radical sign";
call charbegin('160,15,0,0,ph+pb,ph+pb-2pa,0);
hpen; x1=good10(20/3u); x2=r+1; top10y2=h+b; .5[y1,y2]=a;
y3=y5=y7=good6a; y4=y6=y1;
x7=1.5[x2,x1]; lft10x7=lft2x3; rt2x3=rt0x5;
lft10x1=lft2x4; rt2x4=rt0x6;
x8=x7-u; new aa; x8=aa[x5,x2]; y8=aa[y5,y2];
hpen; w2 draw 3..4; % left diagonal
w10 draw 7..4; w0 draw 5..6; % sharpen the corners
lpen#; w2 draw 8..5; % erase excess at upper left
hpen; w0 draw 8..5; % serif
rpen#; w2 draw 1..2; % erase excess at lower right
hpen; w10 draw 1..2. % right diagonal
"Sharp symbol (number sign or hash mark)";
call charbegin('161,15,0,0,ph,ph-2pa,0);
cpen; lft10x1=round u; x3=x1; x2=x4=r-x1;
y1=y2; y3=y4; y1-y3=round(m-e); .5[y1,y3]=a;
w10 draw 1..2; % upper bar
draw 3..4; % lower bar
x5-2u=x1; x8+2u=x2; x6-x5=x8-x7; x6-x7=fixwidth[0,-3u];
y5=y7; y6=y8; top10y6=h; .5[y5,y6]=a;
draw 5..6; % left diagonal
draw 7..8. % right diagonal
"Nabla or backwards-difference operator";
call charbegin('162,15,0,0,ph,0,0);
hpen; rt0x2=round(r-u); lft4x4=round u; top0y2=h; top4y4=h;
bot4y5=-o; y6=y5;
x6-x2=x4-x5; lft4x5=lft0x6; x1=x2; x3=x4;
vpen; top8y1=h; y3=y1;
w9 draw 1..3; % bar line
lpen#; w9 draw 5..4; % erase excess at upper left
hpen; w4 draw 5..4; % left diagonal
rpen#; w4 draw 6..2; w9 draw 6..2; % erase excess at right
hpen; w0 draw 6..2; % right diagonal
y7=y4; lft0x7=lft4x4;
w0 draw 2..7..7..6. % sharpen upper left corner
"Integral sign";
call charbegin('163,9,0,0,ph,pd,0);
hpen; rt2x1=rt0x2=round(r-u); y1=y2;
lft2x9=lft0x8=round u; y8=y9;
cpen; bot2y9=-.9d; y8-y7=y3-y1;
hpen; x3=r-2.5u; x7=2.5u;
top0y3=h; bot0y7=-d;
x5=good1 .5r; y5=.5[y3,y7];
x4=x5+.5u; y4=y5+1/3(y3-y7);
x6=x5-.5u; y6=y5-1/3(y3-y7);
cpen; w2 draw 1; % upper bulb
draw 9; % lower bulb
hpen; draw |w0|2{0,1}..|w0#|3{-1,0}..|.5[w0,w1]|4{x6-x4,y6-y4}..
|w1#|5..|.5[w0,w1]|6{x6-x4,y6-y4}..|w0#|7{-1,0}..8{0,1}. % stem
"Square set union sign (Scott lub)";
call charbegin('164,13,0,0,ph,ph-2pa,0);
cpen; lft10x1=round u; x2=x1; x4=x5=r-x1;
y1=good10(.5[m,h]); .5[y1,y2]=a; y2=y4; y5=y1;
w10 draw 1..2..2..4..4..5. % stroke
"Square set intersection sign (Scott glb)";
call charbegin('165,13,0,0,ph,ph-2pa,0);
cpen; lft10x1=round u; x2=x1; x4=x5=r-x1;
y2=good10(.5[m,h]); .5[y1,y2]=a; y2=y4; y5=y1;
w10 draw 1..2..2..4..4..5. % stroke
"Square reflexive subset sign";
call charbegin('166,18,0,0,ph,ph-2pa,0);
cpen; lft10x6=round 2.5u; x2=x3=x7=r-x6; lft10x4=round x6;
top10y2=h; .5[y2,y3]=y1; y2-y1=(good10 .5[m,h])-(good10 a);
x4=x5; y4=y2; y5=y3;
w10 draw 2..4..4..5..5..3; % stroke
y6=y7; bot10y6=2a-h;
draw 6..7. % bar
"Section sign";
call charbegin('170,8,0,0,ph,pd,0);
hpen; x1=x4=.5r; rt0x2=rt1x3=round(r-1.5u); lft0x5=lft1x6=round 1.5u;
top0y1=h+oo; bot0y4=-d-oo;
y2=y3=.125[y1,y4]; y5=y6=.125[y4,y1];
w0 draw 1{1,0}..2{0,-1}; % upper link
draw 4{-1,0}..5{0,1}; % lower link
cpen; w1 draw 3; draw 6; % bulbs
x7=x11=x5; x9=x12=x2; x8=x10=x1;
y8=1/3[y1,y4]; y10=1/3[y4,y1];
call `a sdraw(1,7,8,9,10,w1-deltaw,w0,-(h+d)/(36u)); % upper stroke
call `b sdraw(8,11,10,12,4,w1-deltaw,w0,-(h+d)/(36u)). % lower stroke
"Dagger mark";
call charbegin('171,8,0,0,ph,pd,0);
cpen; x1=x2=x3=x4=good1(.5r); lft1x5=round u; x6-x2=x2-x5;
top1y1=h; bot6y4=-d; y2=y5=y6=good1m; y3=e;
w1 draw 1; draw 5; draw 6; % bulbs
hpen; draw |w1|1..|w0|2; % top stem
draw |w0|2..|(round .5[w0,w1])-eps #|3..|w0|4; % bottom stem
vpen; draw |w1|5..|w0|2; draw |w1|6..|w0|2. % bars
"Double dagger mark";
call charbegin('172,8,0,0,ph,pd,0);
cpen; x1=x2=x3=x6=x7=x8=good1(.5r); lft1x4=round u; x5-x2=x2-x4;
x9=x4; x10=x5;
top1y1=h; bot1y3=.5[y1,y8]=top1y6; bot1y8=-d;
y2=y4=y5=good1 .5[y1,y3]; y7=y9=y10=good1 .5[y6,y8];
w1 draw 1; draw 3; draw 4; draw 5; draw 6; draw 8; draw 9; draw 10; % bulbs
hpen; draw |w1|1..|w0|2; draw |w1|3..|w0|2;
draw |w1|6..|w0|7; draw |w1|8..|w0|7; % stems
vpen; draw |w1|4..|w0|2; draw |w1|5..|w0|2;
draw |w1|9..|w0|7; draw |w1|10..|w0|7. % bars
"Paragraph mark";
call charbegin('173,11,0,0,ph,pd,0);
cpen; top10y1=h; bot10y6=-d; y4=y7=y9=y1;
y8=y6; y3=y5=good10 .5[y1,y6];
lft10x2=round u; y2=.5[y1,y3]; x1=x3=.5r; x4=x5=x6=good10 .5(r+2u);
x7=x8=x6+2u; x9=r-u;
w10 ddraw 4..1{-1,0}..2{0,-1}..3{1,0}..5, 4..4..4..5..5; % filled bowl
draw 6..4..4..9; % left stem and upper serif
draw 7..8. % right stem
"At sign";
call charbegin('174,14,0,0,ph,0,0);
hpen; x1=x8=x10=.5r; x2=good1 4u; x3=x4=x5=r-x2;
lft0x9=round u; x7=x11=x12=r-x9; x6=5/12[x5,x7];
top0y8=h+oo; bot0y10=-oo; y9=y10;
y1=good6 .8[y10,y8]; y2=y3=y6=good6 .2[y10,y8];
y7=.5[y10,y8]; y11=good6 .1[y10,y8]; y12=.9[y10,y8];
y4=.8[y2,y1]; y5=2/3[y7,y6];
call `a darc(1,2,w1); % left part of inner bowl
call `b darc(1,3,w0); % right part of inner bowl
draw |w1|4..|w1#|5{0,-1}..|w0#|6{1,0}..7{0,1}; % stem and link
call `c arc(8,7,w0); % right part of outer bowl
call `d darc(8,9,w0); % left part of outer bowl
w0 draw 10{1,0}..11(..12). % point
"Copyright symbol";
call charbegin('175,18,0,0,ph,pd,0);
new up; up=.5((h-m)-d); % amount to raise baseline of lowercase c
cpen; rt3x1=round(r-6u);
if top3(top3top6e+2)>.9[e,m]: top3y1=.9[e,m]+up;
else: y1=top3top6e+2+up;
fi;
w3 draw 1; % bulb
hpen; rt0x2=rt3x1; y2=y1; x3=x5=.5(r+u); top0y3=m+oo+up;
w0 draw 2{0,1}..3{-1,0}; % shoulder
if w2>1.5u: lft2x4=round(5.75u);
else: x4=good2 6.5u;
fi;
y4=y5; bot0y5=-oo+up;
call `a darc(3,4,w2); % stroke
if w0=w1: x6=x2; x7-x5=x5-x4; y7=.5[y3,y5];
new aa; x6=aa[x5,x7]; y6=(sqrt(1-aa.aa))[y7,y5];
else: lft0x6=rt0x2; y6=.5e-1+up; x7=x6; y7=e+up;
fi;
w0 draw 5{1,0}..6(..7); % point
cpen; top10y18=h+oo; bot10y14=-d-oo;
lft10x16=round u; rt10x12=round(r-u);
call circle(11,12,13,14,15,16,17,18,w10). % enclosing cirle
"Sterling sign";
call charbegin('176,12,0,0,ph,0,0);
hpen; x1=7.5u; top0y1=h+oo; rt0x2=rt2x3=round(r-1.5u);
y2=y3=.75h; y4=y5=.5h; x4=3u-eps; x5=7.5u+eps;
x6=x7=good1 5u; y6=.75[y8,y1]; y7=.25[y8,y1]; bot0y8=-oo;
x8=2.5u; lft0x9=round u; y9=.1h;
w0 draw 1{1,0}..2{0,-1}; % link
cpen; w2 draw 3; % bulb
call `a arc(1,6,w1); % shoulder
hpen; w1 draw 6..7; % stem
w0 draw 4..5; % bar
call `b arc(8,7,w1); call `c arc(8,9,w0); % loop
top11y10=round .2h; bot11y12=-oo;
x11=.5[x8,x13]-u; y11=y9;
rt0x13=round(r-u); y13=.2h;
call `d zdraw(9,10,11,12,13,w11,w7,-(x13-x8-4u)/(.2h)). % arm
"Dollar sign";
call charbegin('177,9,0,0,ph+pb,pb,ph.slant-.5pu);
new w99; w99=round .3[w0,w4];
hpen; top0y1=h+oo; bot0y5=-oo;
x1=x3=x5=good10 .5r; y3=.52h; lft99x2=round u; x4=r-x2;
y6=y8=.5[y5,y3]; y7=y9=.5[y1,y3];
cpen; lft3x8=lft0x6=lft99x2; rt3x9=rt0x7=rt99x4;
w3 draw 8; % lower bulb
draw 9; % upper bulb
hpen; w0 draw 6{0,-1}..5{1,0}; % lower left stroke
draw 7{0,1}..1{-1,0}; % upper right stroke
call `a sdraw(1,2,3,4,5,w99,w9,-h/(50u)); % middle stroke
cpen; x10=x11=x3; top10y10=h+b; bot10y11=-b;
w10 draw 10..11. % stem
input symext; % possible characters \¬077, \¬156, \¬157, \¬167